package hyy_2022;

import java.util.Deque;
import java.util.LinkedList;

/**
 * 支持 push ，pop ，top 操作，并能在常数时间内检索到最小元素的栈
 */
public class _0723_155_MinStack {

    /**
     * 存入栈元素
     */
    Deque<Integer> xStack;
    /**
     * 辅助栈,存储每个元素入栈时当前栈的最小值
     */
    Deque<Integer> minStack;

    /**
     * 初始化操作
     */
    public _0723_155_MinStack() {
        xStack = new LinkedList<Integer>();
        minStack = new LinkedList<Integer>();
        minStack.push(Integer.MAX_VALUE);
    }

    /**
     * 元素入栈时,辅助栈也需存储当前栈最小值
     * @param x
     */
    public void push(int x) {
        xStack.push(x);
        minStack.push(Math.min(minStack.peek(), x));
    }

    public void pop() {
        xStack.pop();
        minStack.pop();
    }

    public int top() {
        return xStack.peek();
    }

    public int getMin() {
        return minStack.peek();
    }


}
